//
//  NSDate+LYExtension.h
//  Router
//
//  Created by cqck on 2021/11/3.
//

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger, LYTimestampType) {
    ///秒
    LYTimestampTypeSecond,
    ///毫秒
    LYTimestampTypeMillisecond,
};

@interface NSDate (LYExtension)

/**
 @brief 当前手机时间格式化
 
 @param format 格式化规则
 @return NSString 格式化后的时间字符串
 */
+ (NSString *)lyCurrentTimeWithFormat:(NSString *)format;

/**
 @brief 当前时间戳
 
 @param type (LYTimestampTypeSecond秒，LYTimestampTypeMillisecond毫秒)
 @return NSString 时间戳字符串
 */
+ (NSString *)lyCurrentTimestampWithType:(LYTimestampType)type;

/**
 @brief 将字符串时间转成时间戳
 
 @param timeStr 待转换的时间字符串
 @param format 待转换的时间格式
 @param type 时间戳类型(LYTimestampTypeSecond秒，LYTimestampTypeMillisecond毫秒)
 @return NSString 转换后的时间戳
 */
+ (NSString *)lyConvertToTimestampWithTimeStr:(NSString *)timeStr timeFormat:(NSString *)format timestampType:(LYTimestampType)type;

/**
 @brief 将时间戳转换成时间字符串
 
 @param timestamp 待转换的时间戳
 @param format 转换的时间格式
 @param type 时间戳类型(LYTimestampTypeSecond秒，LYTimestampTypeMillisecond毫秒)
 @return NSString 转换后的时间字符串
 */
+ (NSString *)lyConvertToTimeWithTimestamp:(NSString *)timestamp timeFormat:(NSString *)format timestampType:(LYTimestampType)type;

/**
 @brief 时间比对

 @param checkDay 比较时间
 @param compareDay 参照时间
 @param format 对比时间的格式
 @return NSInteger 比较结果(-1 oneDay已过期，1 oneDay未过期，0 相同)
 */
+ (NSInteger)lyCompareDayWithCheckDay:(NSDate *)checkDay compareDay:(NSDate *)compareDay withFormat:(NSString *)format;

/**
 @brief 时间比对

 @param checkDayStr 比较时间字符串
 @param compareDayStr 参照时间字符串
 @param format 对比时间的格式
 @return NSInteger 比较结果(-1 oneDay已过期，1 oneDay未过期，0 相同)
 */
+ (NSInteger)lyCompareDayWithCheckDayStr:(NSString *)checkDayStr compareDayStr:(NSString *)compareDayStr withFormat:(NSString *)format;

/**
 @brief 时间字符串转换成NSDate

 @param str 待转换的时间字符串
 @param format 对比时间的格式
 @return NSDate 转换后的时间
 */
+ (NSDate *)lyDateByTimeStr:(NSString *)str timeFormat:(NSString *)format;

/**
 @brief 时间格式化
 
 @param format 格式化规则
 @return NSString 格式化后的时间字符串
 */
- (NSString *)lyDateToStringWithFormat:(NSString *)format;

/**
 @brief 将NSDate转化成时间戳

 @return NSString 格式化后的时间字符串
 */
- (NSString *)lyConvertToTimestamp:(LYTimestampType)type;

/**
 @brief 获取某一月份总天数

 @param dateStr 需要获取的时间字符串，只能是yyyy-MM-dd的格式
 @return NSInteger 总天数
 */
+ (NSInteger)lyGetTotalDaysWithDateStr:(NSString *)dateStr;

/**
 @brief 获取某一月份总天数(NSDate, 只能是yyyy-MM-dd的格式)

 @return NSInteger 总天数
 */
- (NSInteger)lyGetTotalDays;

@end
